package com.aqie.easy.array;

/**
 * 977. 有序数组的平方
 * todo 双指针
 */
public class SortedSquares {
    /**
     * 指针 i 反向读取负数部分，指针 j 正向读取非负数部分。
     * @param A
     * @return
     */
    public int[] sortedSquares(int[] A) {
        int N = A.length;
        int j = 0;
        while(j < N && A[j] < 0){
            j++;
        }
        int i = j - 1;

        int[] ans = new int [N];
        int t = 0;
        while (i >= 0 && j < N) {
            if (A[i] * A[i] < A[j] * A[j]) {
                ans[t++] = A[i] * A[i];
                i--;
            } else {
                ans[t++] = A[j] * A[j];
                j++;
            }
        }

        while (i >= 0) {
            ans[t++] = A[i] * A[i];
            i--;
        }
        while (j < N) {
            ans[t++] = A[j] * A[j];
            j++;
        }

        return ans;


    }
}
